var tableToExcel = (function() {
  	  uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">'+
	'<head><!--[if gte mso 9]>'+
	'<xml>'+
	'<x:ExcelWorkbook>'+
	'<x:ExcelWorksheets><x:ExcelWorksheet>'+
	'<x:Name>{worksheet}</x:Name>'+
	'<x:WorksheetOptions>'+
	'<x:DisplayGridlines/>'+
	'</x:WorksheetOptions>'+
	'</x:ExcelWorksheet>'+
	'</x:ExcelWorksheets>'+
	'</x:ExcelWorkbook>'+
	'</xml>'+
	'<![endif]--></head>'+
	'<body>'+
	'<table>'+
	'{table}</table>'+
	'</body>'+
	'</html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'reporte', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})();

function validar_no_repetir_texto(id_buscar, texto, numero, excluir)
{
//  /\barbol\b/g;
var buscando=new RegExp(texto);

for(i=0; i<numero; i++){

var ids = 	id_buscar+i;
var valor_caja_texto = document.getElementById(id_buscar+i).value;


if (ids != excluir )
{
//console.log(ids+' ---- '+excluir);

if(buscando.test(valor_caja_texto)){

alert('este articulo ya se encuentro');	
document.getElementById(excluir).value= "";
}

}}}
	
function traer_reportes(vinculo, reporte){

var buscar = "componentes/impresiones/"+reporte+"";
var links = "#"+vinculo+"";

	//$(links).click(function() {

 $('#frames').attr('src', buscar);
 $('#reportes_facturas').remove();
 var nummero = 5000;
 $('#frames').attr('height', nummero);

  

}
      //Ajusta el tamaño de un iframe al de su contenido interior para evitar scroll
            function autofitIframe(id){
                if (!window.opera && document.all && document.getElementById){
					
                    id.style.height=id.contentDocument.document.body.scrollHeight;
					 
					
					
                } else if(document.getElementById) {
					
                    id.style.height=id.contentDocument.body.scrollHeight+"px";
					
                }
            }
			
function datos_local()
{
 if(typeof(Storage)!=="undefined"){
    console.log('Funciona local storage');
}
else{
    console.error('MOG!  usas IE 6 o 7?');
}
}


function captura_inactividad(){
	// tiempo_maximo_inactivo (en segundos)
var tiempo_maximo_inactivo = 10;
// tiempo_ultima_vez_activo (en milisegundos)
var tiempo_ultima_vez_activo = getTimer();
function comprobar() {
	if (getTimer()-tiempo_ultima_vez_activo>tiempo_maximo_reposo*1000) {
		// aquí las acciones cuando se supere el tiempo máximo inactivo
		// clearInterval(interval_idle);
	}
}
// cuando muevo el ratón, se inicia la vble
this.onMouseMove = function() {
	tiempo_ultima_vez_activo = getTimer();
};
// para no sobrecargar la película, evitamos el uso
// de un onEnterFrame y empleamos setInterval
interval_idle = setInterval(comprobar, 100);
	}


function guardar_dato_local(valor,objeto)
{
//creando el objeto
var objeto = {nombre:'Franz', color:'Azul'};
//JSON.stringify(objeto) => "{nombre:'Franz', color:'Azul'}"
objeto = JSON.stringify(objeto);
//guardando como string 
localStorage.setItem('miObjeto',objeto);
//recuperando como string 
var resultado = localStorage.getItem('miObjeto'); 
//JSON.parse convierte a objeto
objeto = JSON.parse(resultado); 
//devuelve "object" 
console.log(typeof objeto);	
}


function borrar_local_storage()
{
// remover dato especifico
sessionStorage.removeItem('miClave');	
	
//borrando
localStorage.clear();
localStorage.length;   // devuelve 0
}


function ocultar(id, cambiar){
document.getElementById(id).style.display="none";
document.getElementById(cambiar).innerHTML = 'mostrar  <i class="icon-chevron-down"></i>';
document.getElementById(cambiar).setAttribute("onclick", "mostrar('"+id+"', '"+cambiar+"')");
}

function mostrar(id, cambiar){
document.getElementById(id).style.display="";
document.getElementById(cambiar).innerHTML = 'ocultar <i class="icon-chevron-up"></i>';
document.getElementById(cambiar).setAttribute("onclick", "ocultar('"+id+"', '"+cambiar+"')");
}

function cambiarDisplay(id) {
	
  if (!document.getElementById) return false;
  fila = document.getElementById(id);
  if (fila.style.display != "none") {
    fila.style.display = "none"; //ocultar fila 
  } else {
    fila.style.display = ""; //mostrar fila 
  }
}


function ocultarFila(ids, num,ver) {
  dis= ver ? '' : 'none';
  tab=document.getElementById(ids);
  tab.getElementsByTagName('tr')[num].style.display=dis;
}

function ocultarColumna(ids,num,ver) {
  dis= ver ? '' : 'none';
  fila=document.getElementById(ids).getElementsByTagName('tr');
  for(i=0;i<fila.length;i++)
    fila[i].getElementsByTagName('td')[num].style.display=dis;

}

function abrir_ventana(url, nombre, propiedades) 
{ 
	
  	miVentana = window.open(url,nombre,propiedades);
	miVentana.focus();
}

function cerrar_ventana() 
{ 
	miVentana.close();  
}

function abrir_ventana_centro(url,nombre,propiedades,width,height) {
	
    if (!width) width = 800;
	if (!height) height = 600;
	
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt(((screen.availHeight/2) - (height/2))-15);
    propiedades = "width=" + width + ",height=" + height + 
        ",status,resizable,left=" + left + ",top=" + top + 
        ",screenX=" + left + ",screenY=" + top+", "+propiedades;
    myWindow = window.open(url,nombre,propiedades);
	myWindow.focus();
}

function enviar_formulario(variable)
{

	document.frm_formulario.caja.value = variable;
	document.frm_formulario.action = "../otro.php";
	document.frm_formulario.submit();
}

function redondear(numero, decimales)
{
	factor = Math.pow(10, decimales);
	return (Math.round(numero*factor)/factor);
} 

function redondeaDecimales(sVal, nDec){
	var n = parseFloat(sVal);
	var s = "0.00";
	if (!isNaN(n)){
		n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec);
		s = String(n);
		s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1);
		s = s.substr(0, s.indexOf(".") + nDec + 1);
	}
	return s;
}

function isEmpty(s)
{   
	return ((s == null) || (s.length == 0))
}

function quita_ceros_izq(numero)
{   
	numero = numero.toString();
	
	if (numero == '')
	{
		numero = '0';
	}
	
	while (numero != '0' && numero.charAt(0) == '0')
	{
		numero = numero.substring(1, numero.length);
	}

	return numero;
}

function formato_numero(input)
{
	var num = input.value.replace(/\./g,'');
	if(!isNaN(num))
	{
	num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
	num = num.split('').reverse().join('').replace(/^[\.]/,'');
	input.value = num;
	}
	else
	{ 
		alert("Solo se permiten numeros");
		input.value = input.value.replace(/[^\d\.]*/g,'');
	}
}

function claseArchivo(extension)
{
	var x;
	switch(extension)
	{
		case 'jpg':	x= 0; break;
		case 'gif':	x= 0; break;
		case 'bmp':	x= 0; break;
		case 'xls':	x = 1; break;
		case 'xlsx': x = 2; break;
		case 'doc':	x = 1; break;
		case 'docx': x = 1; break;
		case 'pdf':	x = 1; break;
	}
	return x; 
}


function ingresar() 
{
	clave_hash = hex_md5(document.frm_login.txt_clave_ne.value);
	document.frm_login.txt_clave.value = clave_hash;
	document.frm_login.txt_clave_ne.value = "";
	document.frm_login.submit();
}


function diferencia_en_dias(inicio, fin)
{
	if (inicio != '')
	{
		// esta es la expresion regular 
		var regex = /(\d+)-(\d+)-(\d+)/; 
		
		// la "fecha inicial" 
		var aFini = inicio.replace(regex,"$1"); 
		var mFini = inicio.replace(regex,"$2"); 
		var dFini = inicio.replace(regex,"$3"); 
		
		// la "fecha final" 
		var aFfin = fin.replace(regex,"$1"); 
		var mFfin = fin.replace(regex,"$2"); 
		var dFfin = fin.replace(regex,"$3"); 
		
		var oFini = new Date(aFini,mFini - 1,dFini); 
		var oFfin = new Date(aFfin,mFfin - 1,dFfin); 
		
		return (oFfin - oFini)/86400000;
	}
	else
	{
		return 0;
	}
}